package com.numberone.iotplatform.service;

import com.numberone.iotplatform.entity.DeviceEvent;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.time.LocalDateTime;

/**
 * 设备事件服务的接口定义。
 * 负责处理与设备事件相关的业务逻辑。
 */
public interface DeviceEventService {

    /**
     * 根据设备ID和其他筛选条件，分页查询事件记录。
     *
     * @param deviceId    必需，要查询的设备ID
     * @param eventType   可选，按事件类型筛选
     * @param startTime   可选，查询的起始时间
     * @param endTime     可选，查询的结束时间
     * @param pageable    Spring Data JPA 提供的分页和排序参数
     * @return 分页后的事件记录 (Page<DeviceEvent>)
     */
    Page<DeviceEvent> findEventsByDeviceId(
            Long deviceId,
            String eventType,
            LocalDateTime startTime,
            LocalDateTime endTime,
            Pageable pageable
    );

    // 未来可以添加其他方法，例如：
    // void createEvent(Long deviceId, CreateEventDTO createEventDTO);
    // long countUnreadEvents(Long deviceId);
}